package com.anzuo.app.data.local

import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import com.anzuo.app.data.local.dao.ItemDao
import com.anzuo.app.data.local.entity.ItemEntity

/**
 * AppDatabase - Room数据库
 * 负责管理本地数据库的创建和版本管理
 * 
 * @author AnZuo
 * @date 2024
 */
@Database(
    entities = [ItemEntity::class],
    version = 1,
    exportSchema = false
)
abstract class AppDatabase : RoomDatabase() {

    /**
     * 获取ItemDao实例
     */
    abstract fun itemDao(): ItemDao

    companion object {
        @Volatile
        private var INSTANCE: AppDatabase? = null

        /**
         * 获取数据库实例（单例模式）
         */
        fun getDatabase(context: Context): AppDatabase {
            return INSTANCE ?: synchronized(this) {
                val instance = Room.databaseBuilder(
                    context.applicationContext,
                    AppDatabase::class.java,
                    "anzuo_database"
                )
                    .fallbackToDestructiveMigration() // 开发阶段使用，生产环境需要Migration
                    .build()
                INSTANCE = instance
                instance
            }
        }
    }
}

